package com.dszq.wemedia.controller.v1;

import com.dszq.model.common.dtos.ResponseResult;
import com.dszq.model.wemedia.dtos.WmMaterialDto;
import com.dszq.wemedia.service.WmMaterialService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

/**
 * [一句话描述该类的功能]
 *
 * @author : [Lenovo]
 * @version : [v1.0]
 * @createTime : [2024/4/17 22:00]
 */
@RestController
@RequestMapping("/api/v1/material")
public class WmMaterialController {
    @Autowired
    private WmMaterialService wmMaterialService;
    /**
     * 上传图片
     *
     * @param multipartFile 上传的图片文件，使用MultipartFile类型接收
     * @return 返回上传结果，封装在ResponseResult对象中
     */
    @RequestMapping("/upload_picture")
    public ResponseResult uploadPicture(@RequestBody MultipartFile multipartFile)
    {
        return wmMaterialService.uploadPicture(multipartFile);
    }

    /**
     * 根据传入的材料信息查询相应的材料列表。
     *
     * @param wmMaterialDto 材料信息传输对象，包含查询条件等信息。
     * @return 返回材料列表的响应结果，包括材料信息等。
     */
    @PostMapping("/list")
    public ResponseResult findList(@RequestBody WmMaterialDto wmMaterialDto)
    {
        return wmMaterialService.findList(wmMaterialDto);
    }

    /**
     * 根据素材ID删除图片
     *
     * @param id 素材的ID，通过URL路径变量传递
     * @return 返回操作结果，包括操作是否成功、错误信息等
     */
    @GetMapping("/del_picture/{id}")
    public ResponseResult deleteByMaterialId(@PathVariable Integer id)
    {
        // 通过素材ID删除素材
        return wmMaterialService.deleteById(id);
    }

    /**
     * 修改指定ID的素材为收藏或取消收藏
     *
     * @param id 收藏的唯一标识符，指定要修改的素材的ID
     * @return ResponseResult 返回一个结果对象，包含操作是否成功及相应信息。如果操作成功，返回成功的状态码和消息；如果操作失败，返回失败的状态码和错误消息。
     */
    @GetMapping("/collect/{id}")
    public ResponseResult collectionOrCancel(@PathVariable Integer id)
    {
        // 调用服务层方法，检查指定资源是否被收藏
        return wmMaterialService.collectionOrCancel(id);
    }

    @GetMapping("/cancel_collect/{id}")
    public ResponseResult CancelOrCollection(@PathVariable Integer id)
    {
        // 调用服务层方法，检查指定资源是否被收藏
        return wmMaterialService.collectionOrCancel(id);
    }

}
